import type { VbenFormSchema } from '#/adapter/form';
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { HandCardTypeApi } from '#/api/spa/handcard/type';

import { getDictOptions, getRangePickerDefaultProps } from '#/utils';
import { DICT_SPA_TYPE } from '#/utils/dictSpa';
import GoodsBinder from "#/views/spa/handcard/type/modules/goods-binder.vue";

/** 新增/修改的表单 */
export function useFormSchema(): VbenFormSchema[] {
  return [
    {
      fieldName: 'id',
      component: 'Input',
      dependencies: {
        triggerFields: [''],
        show: () => false,
      },
    },
    {
      fieldName: 'typeName',
      label: '类型名称',
      rules: 'required',
      component: 'Input',
      componentProps: {
        placeholder: '请输入手牌类型名称',
      },
    },
    {
      fieldName: 'typeCode',
      label: '类型编码',
      rules: 'required',
      component: 'Input',
      componentProps: {
        placeholder: '请输入类型编码',
      },
      dependencies: {
        triggerFields: ['id'],
        componentProps: (values: any) => {
          return {
            disabled: !!values.id,
          };
        },
      },
    },
    {
      fieldName: 'typeCategory',
      label: '类型分类',
      rules: 'required',
      component: 'RadioGroup',
      componentProps: {
        options: getDictOptions(DICT_SPA_TYPE.HandCardCategory, 'string'),
        buttonStyle: 'solid',
        optionType: 'button',
      },
      defaultValue: 'basic',
    },
    // {
    //   fieldName: 'goodsIds',
    //   label: '',
    //   component: 'Input',
    //   dependencies: {
    //     triggerFields: ['goodsIds'],
    //     show: () => false,
    //   },
    //   defaultValue: [],
    // },
    {
      fieldName: 'goodsInfo',
      label: '绑定商品',
      rules: 'required',
      component: GoodsBinder,
      defaultValue: [],
      componentProps: {
        placeholder: '请选择绑定商品',
        onChange: ({ ids, info }: { ids: (number|string)[]; info: any[] }, ctx: any) => {

        },
      }
    },

    // {
    //   fieldName: 'parentTypeId',
    //   label: '父类型ID（支持层级）',
    //   component: 'Input',
    //   componentProps: {
    //     placeholder: '请输入父类型ID（支持层级）',
    //   },
    // },
    // {
    //   fieldName: 'adultPrice',
    //   label: '成人价',
    //   rules: 'required',
    //   component: 'Input',
    //   componentProps: {
    //     placeholder: '请输入成人价',
    //   },
    // },
    // {
    //   fieldName: 'childPrice',
    //   label: '儿童价',
    //   rules: 'required',
    //   component: 'Input',
    //   componentProps: {
    //     placeholder: '请输入儿童价',
    //   },
    // },
    // {
    //   fieldName: 'seniorPrice',
    //   label: '老人价',
    //   component: 'Input',
    //   componentProps: {
    //     placeholder: '请输入老人价',
    //   },
    // },
    // {
    //   fieldName: 'memberPrice',
    //   label: '会员价',
    //   component: 'Input',
    //   componentProps: {
    //     placeholder: '请输入会员价',
    //   },
    // },
    // {
    //   fieldName: 'peakHourPrice',
    //   label: '高峰时段价格',
    //   component: 'Input',
    //   componentProps: {
    //     placeholder: '请输入高峰时段价格',
    //   },
    // },
    // {
    //   fieldName: 'dynamicPricing',
    //   label: '动态定价配置',
    //   component: 'Input',
    //   componentProps: {
    //     placeholder: '请输入动态定价配置',
    //   },
    // },
    // {
    //   fieldName: 'discountFlag',
    //   label: '参与折扣',
    //   // component: 'RadioGroup',
    //   // componentProps: {
    //   //   options: getDictOptions(DICT_SPA_TYPE.HandCardStatus, 'boolean'),
    //   //   buttonStyle: 'solid',
    //   //   optionType: 'button',
    //   // },
    // },
    // {
    //   fieldName: 'discountRules',
    //   label: '折扣规则配置',
    //   component: 'Input',
    //   componentProps: {
    //     placeholder: '请输入折扣规则配置',
    //   },
    // },
    // {
    //   fieldName: 'memberBenefits',
    //   label: '会员权益配置',
    //   component: 'Input',
    //   componentProps: {
    //     placeholder: '请输入会员权益配置',
    //   },
    // },
    // {
    //   fieldName: 'maxUsageHours',
    //   label: '最大使用时长(小时)',
    //   component: 'Input',
    //   componentProps: {
    //     placeholder: '请输入最大使用时长(小时)',
    //   },
    // },
    // {
    //   fieldName: 'minUsageHours',
    //   label: '最小使用时长(小时)',
    //   component: 'Input',
    //   componentProps: {
    //     placeholder: '请输入最小使用时长(小时)',
    //   },
    // },
    // {
    //   fieldName: 'advanceBookingHours',
    //   label: '提前预约小时数',
    //   component: 'Input',
    //   componentProps: {
    //     placeholder: '请输入提前预约小时数',
    //   },
    // },
    // {
    //   fieldName: 'usageRestrictions',
    //   label: '使用限制',
    //   component: 'Input',
    //   componentProps: {
    //     placeholder: '请输入使用限制：{"age_limit":18,"time_limit":"22:00"}',
    //   },
    // },


    {
      fieldName: 'status',
      label: '状态',
      component: 'RadioGroup',
      rules: 'required',
      componentProps: {
        options: getDictOptions(DICT_SPA_TYPE.HandCardTypeStatus, 'string'),
        placeholder: '请选择状态',
        buttonStyle: 'solid',
        optionType: 'button',
      },
      defaultValue: 'active',
    },
    {
      fieldName: 'iconUrl',
      label: '图标',
      component: 'Input',
      componentProps: {
        placeholder: '请输入图标',
      },
    },
    {
      fieldName: 'colorCode',
      label: '颜色代码',
      component: 'Input',
      componentProps: {
        placeholder: '请输入颜色代码',
      },
    },
    {
      fieldName: 'description',
      label: '类型描述',
      component: 'RichTextarea',
    },
    {
      fieldName: 'sortOrder',
      label: '排序',
      component: 'Input',
      componentProps: {
        placeholder: '请输入排序',
      },
    },
    // {
    //   fieldName: 'isFeatured',
    //   label: '是否推荐',
    //   // component: 'RadioGroup',
    //   // componentProps: {
    //   //   options: getDictOptions(DICT_SPA_TYPE.HandCardStatus, 'boolean'),
    //   //   buttonStyle: 'solid',
    //   //   optionType: 'button',
    //   // },
    // },
    // {
    //   fieldName: 'orgId',
    //   label: '组织ID',
    //   rules: 'required',
    //   component: 'Input',
    //   componentProps: {
    //     placeholder: '请输入组织ID',
    //   },
    // },
    // {
    //   fieldName: 'groupId',
    //   label: '所属集团ID',
    //   rules: 'required',
    //   component: 'Input',
    //   componentProps: {
    //     placeholder: '请输入所属集团ID',
    //   },
    // },
    // {
    //   fieldName: 'storeId',
    //   label: '所属门店ID',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入所属门店ID',
    //   },
    // },
    {
      fieldName: 'remark',
      label: '备注',
      component: 'Input',
      componentProps: {
        placeholder: '请输入备注',
      },
    },
  ];
}

/** 列表的搜索表单 */
export function useGridFormSchema(): VbenFormSchema[] {
  return [
    {
      fieldName: 'typeName',
      label: '类型名称',
      component: 'Input',
      componentProps: {
        allowClear: true,
        placeholder: '请输入手牌类型名称',
      },
    },
    {
      fieldName: 'typeCategory',
      label: '类型分类',
      component: 'Select',
      componentProps: {
        allowClear: true,
        options: getDictOptions(DICT_SPA_TYPE.HandCardCategory, 'string'),
        placeholder: '请选择状态',
      },
    },
    // {
    //   fieldName: 'parentTypeId',
    //   label: '父类型ID（支持层级）',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入父类型ID（支持层级）',
    //   },
    // },
    // {
    //   fieldName: 'adultPrice',
    //   label: '成人价',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入成人价',
    //   },
    // },
    // {
    //   fieldName: 'childPrice',
    //   label: '儿童价',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入儿童价',
    //   },
    // },
    // {
    //   fieldName: 'seniorPrice',
    //   label: '老人价',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入老人价',
    //   },
    // },
    // {
    //   fieldName: 'memberPrice',
    //   label: '会员价',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入会员价',
    //   },
    // },
    // {
    //   fieldName: 'peakHourPrice',
    //   label: '高峰时段价格',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入高峰时段价格',
    //   },
    // },
    // {
    //   fieldName: 'dynamicPricing',
    //   label: '动态定价配置',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入动态定价配置',
    //   },
    // },
    // {
    //   fieldName: 'discountFlag',
    //   label: '参与折扣',
    //   // component: 'Select',
    //   // componentProps: {
    //   //   allowClear: true,
    //   //   options: getDictOptions(DICT_SPA_TYPE.HandCardStatus, 'boolean'),
    //   //   placeholder: '请选择参与折扣（1：参与折扣 0：不参与折扣）',
    //   // },
    // },
    // {
    //   fieldName: 'discountRules',
    //   label: '折扣规则配置',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入折扣规则配置',
    //   },
    // },
    // {
    //   fieldName: 'memberBenefits',
    //   label: '会员权益配置',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入会员权益配置',
    //   },
    // },
    // {
    //   fieldName: 'maxUsageHours',
    //   label: '最大使用时长(小时)',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入最大使用时长(小时)',
    //   },
    // },
    // {
    //   fieldName: 'minUsageHours',
    //   label: '最小使用时长(小时)',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入最小使用时长(小时)',
    //   },
    // },
    // {
    //   fieldName: 'advanceBookingHours',
    //   label: '提前预约小时数',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入提前预约小时数',
    //   },
    // },
    // {
    //   fieldName: 'usageRestrictions',
    //   label: '使用限制',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入使用限制：{"age_limit":18,"time_limit":"22:00"}',
    //   },
    // },
    // {
    //   fieldName: 'description',
    //   label: '类型描述',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入类型描述',
    //   },
    // },
    // {
    //   fieldName: 'iconUrl',
    //   label: '图标URL',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入图标URL',
    //   },
    // },
    // {
    //   fieldName: 'colorCode',
    //   label: '颜色代码',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入颜色代码',
    //   },
    // },
    {
      fieldName: 'status',
      label: '状态',
      component: 'Select',
      componentProps: {
        allowClear: true,
        options: getDictOptions(DICT_SPA_TYPE.HandCardTypeStatus, 'string'),
        placeholder: '请选择状态',
      },
    },
    // {
    //   fieldName: 'sortOrder',
    //   label: '排序',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入排序',
    //   },
    // },
    // {
    //   fieldName: 'isFeatured',
    //   label: '是否推荐',
    //   // component: 'Select',
    //   // componentProps: {
    //   //   allowClear: true,
    //   //   options: getDictOptions(DICT_SPA_TYPE.HandCardStatus, 'boolean'),
    //   //   placeholder: '请选择是否推荐',
    //   // },
    // },
    // {
    //   fieldName: 'orgId',
    //   label: '组织ID',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入组织ID',
    //   },
    // },
    // {
    //   fieldName: 'groupId',
    //   label: '所属集团ID',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入所属集团ID',
    //   },
    // },
    // {
    //   fieldName: 'storeId',
    //   label: '所属门店ID',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入所属门店ID',
    //   },
    // },
    // {
    //   fieldName: 'remark',
    //   label: '备注',
    //   component: 'Input',
    //   componentProps: {
    //     allowClear: true,
    //     placeholder: '请输入备注',
    //   },
    // },
    {
      fieldName: 'createTime',
      label: '创建时间',
      component: 'RangePicker',
      componentProps: {
        ...getRangePickerDefaultProps(),
        allowClear: true,
      },
    },
  ];
}

/** 列表的字段 */
export function useGridColumns(): VxeTableGridOptions<HandCardTypeApi.HandCardType>['columns'] {
  return [
    // {
    //   field: 'id',
    //   title: '手牌类型ID',
    //   minWidth: 120,
    // },

    {
      field: 'typeName',
      title: '手牌类型名称',
      minWidth: 120,
    },
    {
      field: 'typeCode',
      title: '类型编码',
      minWidth: 120,
    },
    {
      field: 'goodsInfo',
      title: '绑定商品',
      minWidth: 320,
      slots: { default: 'goodsInfo' },
      showOverflow: false,
    },
    {
      field: 'typeCategory',
      title: '类型分类',
      minWidth: 120,
      cellRender: {
        name: 'CellDict',
        props: { type: DICT_SPA_TYPE.HandCardCategory },
      },
    },
    // {
    //   field: 'parentTypeId',
    //   title: '父类型ID（支持层级）',
    //   minWidth: 120,
    //
    // },
    // {
    //   field: 'adultPrice',
    //   title: '成人价',
    //   minWidth: 120,
    // },
    // {
    //   field: 'childPrice',
    //   title: '儿童价',
    //   minWidth: 120,
    // },
    // {
    //   field: 'seniorPrice',
    //   title: '老人价',
    //   minWidth: 120,
    // },
    // {
    //   field: 'memberPrice',
    //   title: '会员价',
    //   minWidth: 120,
    // },
    // {
    //   field: 'peakHourPrice',
    //   title: '高峰时段价格',
    //   minWidth: 120,
    // },
    // {
    //   field: 'dynamicPricing',
    //   title: '动态定价配置',
    //   minWidth: 120,
    // },
    // {
    //   field: 'discountFlag',
    //   title: '参与折扣',
    //   minWidth: 120,
    // },
    // {
    //   field: 'discountRules',
    //   title: '折扣规则配置',
    //   minWidth: 120,
    // },
    // {
    //   field: 'memberBenefits',
    //   title: '会员权益配置',
    //   minWidth: 120,
    // },
    // {
    //   field: 'maxUsageHours',
    //   title: '最大使用时长(小时)',
    //   minWidth: 120,
    // },
    // {
    //   field: 'minUsageHours',
    //   title: '最小使用时长(小时)',
    //   minWidth: 120,
    // },
    // {
    //   field: 'advanceBookingHours',
    //   title: '提前预约小时数',
    //   minWidth: 120,
    // },
    // {
    //   field: 'usageRestrictions',
    //   title: '使用限制',
    //   minWidth: 120,
    // },
    // {
    //   field: 'description',
    //   title: '类型描述',
    //   minWidth: 120,
    // },
    // {
    //   field: 'iconUrl',
    //   title: '图标URL',
    //   minWidth: 120,
    // },
    // {
    //   field: 'colorCode',
    //   title: '颜色代码',
    //   minWidth: 120,
    // },
    {
      field: 'status',
      title: '状态',
      minWidth: 120,
      cellRender: {
        name: 'CellDict',
        props: { type: DICT_SPA_TYPE.HandCardTypeStatus },
      },
    },
    // {
    //   field: 'sortOrder',
    //   title: '排序',
    //   minWidth: 120,
    // },
    // {
    //   field: 'isFeatured',
    //   title: '是否推荐',
    //   minWidth: 120,
    // },
    // {
    //   field: 'orgId',
    //   title: '组织ID',
    //   minWidth: 120,
    // },
    // {
    //   field: 'groupId',
    //   title: '所属集团ID',
    //   minWidth: 120,
    // },
    // {
    //   field: 'storeId',
    //   title: '所属门店ID',
    //   minWidth: 120,
    // },
    // {
    //   field: 'remark',
    //   title: '备注',
    //   minWidth: 120,
    // },
    {
      field: 'createTime',
      title: '创建时间',
      minWidth: 120,
      formatter: 'formatDateTime',
    },
    {
      title: '操作',
      width: 200,
      fixed: 'right',
      slots: { default: 'actions' },
    },
  ];
}
